# 构建系统提示，让LLM理解如何选择工具和生成参数

# MCP工具选择提示模板
MCPToolChosen_prompt = """你是一个AI助手，需要根据用户的请求选择并调用合适的工具。
可用的工具有：
{0}

请根据用户的请求，选择最合适的工具，并生成调用该工具所需的参数。
你必须按照以下JSON格式返回：
{{
  "tool_name": "工具名称",
  "parameters": {{
    "参数1": "值1",
    "参数2": "值2",
    ...
  }}
}}

只返回JSON，不要有任何其他内容。确保JSON格式正确。
注意：不能出现参数缺失的情况，如果有不能确定的参数，返回缺失参数如何补充的提示信息。
"""

markDownHandle_prompt = """请将以下内容转换为结构清晰、排版美观的 Markdown 格式。
用户问题：
{0}
参考内容：
{1}

请确保：
1. 根据用户问题回答，将参考内容整理成用户能看懂的回答。去掉接口调用相关的信息，只保留要展示的核心内容
2. 如果需要有图片数据，需单独一行显示，用正确的markdown <img> 语法包裹
3. 如果返回内容包含链接，请使用markdown格式的链接语法
4. 每个主要部分之间用分隔线或空行隔开，确保内容块之间有良好的视觉区分
5. 最终的结果不要带```markdown 语法标签，但要确保数据遵循markdown格式规范

你的回答应当简洁明了，重点突出，并使用良好的序号列表格式。请直接返回markdown内容，不要包含其他说明。"""


def getPrompt(type, *args):
    """获取指定类型的提示模板
    
    Args:
        type: 提示类型，例如"MCPToolChosen"
        *args: 格式化提示模板的参数
    
    Returns:
        格式化后的提示字符串
    """
    if type == "MCPToolChosen":
        # 确保至少有一个参数传入
        if args:
            return MCPToolChosen_prompt.format(*args)
        else:
            return MCPToolChosen_prompt
    elif type == "markDownHandle":
        # 确保至少有一个参数传入
        if args:
            return markDownHandle_prompt.format(*args)
        else:
            return markDownHandle_prompt
    return None
